1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #include<bits/stdc++.h>//自行脑补头文件 #define mem(x,y) memset(x,y,sizeof(x)) using namespace std; int w[110][110]; int a[110]; int sum[110]; int getw(int st,int ed) { if(st==ed)return w[st][ed]=a[st]; if(w[st][ed]!=-1)return w[st][ed]; int a=getw(st+1,ed),b=getw(st,ed-1); return w[st][ed]=sum[ed]-sum[st-1]-min(a,b); } int main() { mem(w,-1); int n; scanf("%d",&n); sum[0]=0; for(int i=1;i<=n;i++) { scanf("%d",a+i); sum[i]=sum[i-1]+a[i]; } int res1=getw(1,n),res2=sum[n]-res1; printf("%d %d\n",res1,res2); }
|